package com.wx.gof.pattern.behavioral.strategy;

/**
 * @ClassName Application
 * @Author wx
 * @Description
 * 定义:
 * 其用意是针对一组行为，将每一个行为封装到具有共同接口的独立的类中，从而使得它们可以相互替换。
 * 使得行为可以在不影响到客户端的情况下发生变化。
 * 描述:
 * 不同的行为对应不同的策略
 * 适用场景:
 * 1.系统有很多类，而他们的区别仅仅在于他们的行为不同
 * 2.大量的if else 或者 switc(一个系统需要动态的在几种算法中选择一种)
 * 优点:
 * 1.避免使用多重条件语句
 * 缺点:
 * 1.客户端必须知道所有的策略类
 * 2.产生很多策略类
 * 理解:
 * 应用程序-策略设计模式(符合开闭原则，适用与大量if else 或 swicth)
 * @Date 2018-12-13-21:27
 */
public class Application {
    public static void main(String[] agrs){
        ApprovalRun  approvalRun = new ApprovalRun(ApprovalFactory.getApproval(ApprovalFactory.ApprovalKey.TEACHER));
        approvalRun.executeApprovaRun();
    }
}
